An enterprise database system can process large volumes of data. Performing complex business calculations on data sets representing large organizations can take a great deal of time, due to the large number of operations involved. Such jobs typically have a large number of independent operations to perform, and thus lend themselves naturally to parallelization. However, designing software for parallel computing is challenging even for experienced programmers, and errors can be very difficult to find. It is therefore difficult to adapt the parallel computing model to business computing, where new business calculations need to be designed by a business administrator, not by an experienced software designer, yet still guaranteed to work.
For a database software company providing a software as a service (SaaS) model, a further complication arises. In a SaaS architecture, a number of tenants (clients to the database software company) use shared hardware, including shared processors and shared storage. In the case of a single tenant utilizing a large parallel processor, it can utilize as much of the processor as necessary in order to complete the job as quickly as possible. However, when multiple tenants are sharing hardware, the processing power needs to be divided between the tenants in an appropriate way such that each job completes in a reasonable amount of time. Clients differ in size and requirements, complicating the division of processing power between them.